As you may have noticed, I've posted a new version of my web site. This new version is re-written from the ground up, using some great new tech. The photo experience has been re-imagined, but other areas of the site retain a similar though improved user experience. The entire site is now much more mobile-friendly, and more responsive as well.
As for the new tech that's driving everything, the site is now a single-page application. The client-side is wirtten entirely in React. On the server, the application is hosted from an ASP.NET Core process running in IIS, which handles server-side rendering of the React components via something called the JavaScriptViewEngine. This view engine is used instead of the standard Razor view engine, and essentially hands off the rendering of a top-level React component to Node.js. Everything is tied together by Redux, which handles all of the client-side state. It gets its initial state from the server-side render depending on which "page" was initially requested, and retrieves additional data as needed from the server's Web API.
Building the new site was a great deal of fun; combining React with ASP.NET Core proved to be an interesting challenge, but I think the combination is elegant. The server is responsible for providing data, the initial state, and the initial render to the UI, but the UI drives everything else. Developing the new site has kept me up late many nights over the last few months, but I've learned a fair amount in the process. Still, it is nice to finally get it out the door!